<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class BloquearHabitacion extends CI_Controller {

    public function __construct() {
        parent::__construct();
        session_start();
        $this->estaLogueado();
        $this->load->model('cuartoM');
        $this->load->model('reservaM');
        $this->load->model('reserva_x_cuartoM');
    }

    public function index() {
        $this->escapar($_POST);
        $esMiCuarto = $this->cuartoM->esMiCuarto($_POST["idHabitacion"], $_SESSION["establecimiento"]["id_establecimiento"]);
        if ($esMiCuarto[0]->cantidad == 1) {
            $this->validarFechaLegadaSalida($_POST["desde"], $_POST["hasta"], $_POST["idHabitacion"]);
            $this->formatoFechaBD($_POST["desde"]);
            $this->formatoFechaBD($_POST["hasta"]);
            $this->reservaM->bloquearHabitacion($_POST["desde"], $_POST["hasta"], $_POST["nota"]);
            $idReserva = mysql_insert_id();
            $this->reserva_x_cuartoM->registrarReserva($idReserva, $_POST['idHabitacion']);
            $_SESSION["mensaje"]["contenido"] = "El bloqueo se creó exitosamente";
            $_SESSION["mensaje"]["tipo"] = "exito";
              header("Location:calendario");
        } else {
            $_SESSION["mensaje"]["contenido"] = "Inténtalo nuevamente";
            $_SESSION["mensaje"]["tipo"] = "advertencia";
              header("Location:calendario");
        }
    }

    public function eliminar() {
        $this->escapar($_POST);
        if (!empty($_POST["idReserva"]) && $this->validarReservaPost($_POST["idReserva"])) {
            $this->reservaM->eliminarReserva($_POST["idReserva"], $_SESSION["usuario"]["id_usuario"]);
            $_SESSION["mensaje"]["contenido"] = "El bloqueo se eliminó exitosamente";
            $_SESSION["mensaje"]["tipo"] = "exito";
            header("Location:../calendario");
        } else {
            $_SESSION["mensaje"]["contenido"] = "Inténtalo nuevamente";
            $_SESSION["mensaje"]["tipo"] = "advertencia";
            header("Location:../calendario");
        }
    }

    private function validarReservaPost($idReserva) {
        $r = $this->reservaM->esMiReserva($idReserva, $_SESSION['establecimiento']['id_establecimiento']);
        if ($r[0]->cantidad == 1) {
            return true;
        } else {
            return false;
        }
    }

    private function validarFechaLegadaSalida($desde, $hasta, $idHabitacion) {
        $desde = explode('/', $desde);
        $hasta = explode('/', $hasta);
        $anioInicio = $desde[2];
        $anioFin = $hasta[2];
        $mesInicio = $desde[1];
        $mesFin = $hasta[1];
        $desde = $desde[2] . '-' . $desde[1] . '-' . $desde[0];
        $hasta = $hasta[2] . '-' . $hasta[1] . '-' . $hasta[0];
        $desde2 = strtotime('+1 day', strtotime($desde));
        $desde2 = date('Y-m-j', $desde2);
        $hasta2 = strtotime('-1 day', strtotime($hasta));
        $hasta2 = date('Y-m-j', $hasta2);

        $cantidadReservas = $this->reservaM->verificarFechas($desde, $desde2, $hasta, $hasta2, $idHabitacion, "");
        if ($cantidadReservas[0]->cantidad != 0) {
            $_SESSION["mensaje"]["contenido"] = "Fechas inválidas";
            $_SESSION["mensaje"]["tipo"] = "advertencia";
            header("Location:calendario");
            exit();
        }

        $difAnio = $anioFin - $anioInicio;
        $difMes = $mesFin - $mesInicio;
        /* Validar que la duracion de la reserva no sea mayor a 6 meses */
        if ($difAnio == 0 && $difMes > 6) {
            $_SESSION["mensaje"]["contenido"] = "El bloqueo no debe ser mayor a 6 meses";
            $_SESSION["mensaje"]["tipo"] = "advertencia";
            header("Location:calendario");
            exit();
        } else if ($difAnio == 1 && (12 - $mesInicio + $mesFin) > 6) {
            $_SESSION["mensaje"]["contenido"] = "El bloqueo no debe ser mayor a 6 meses";
            $_SESSION["mensaje"]["tipo"] = "advertencia";
            header("Location:calendario");
            exit();
        } else if ($difAnio > 1) {
            $_SESSION["mensaje"]["contenido"] = "El bloqueo no debe ser mayor a 6 meses";
            $_SESSION["mensaje"]["tipo"] = "advertencia";
            header("Location:calendario");
            exit();
        }
    }

}